iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
1
自我挑戰組

新手 R 語言學習紀錄系列 第 2

Day 2- R語言的程式語言特性

  • 分享至 

  • xImage
  •  

Day 2- R語言的程式設計法
(前言:內ㄍ,由於本人沒有接觸過程式語言及程式設計,寫的內容可能不是很正確,還請大家多多指教 :D)
(註解:在這篇文章裡,我會用「編程」(對岸用法)二字取代「程式設計」,如果看不習慣的話,在這邊先說聲抱歉!)

除了物件導向外,程式設計法其實還有分很多種。當然,我不會在這邊一一介紹每種程式設計法的特性。今天就來了解R語言的其他程式設計特性吧。

R是屬於多重編程類型的程式設計語言,其編程特性涵蓋:陣列編程(array programming)、物件導向編程(object-oriented)、指令式編程(imperative)、函數式編程(functional)、程序式編程 (procedural)及反射式編程(reflective)

首先講 陣列編程(array programming) 。陣列編程通常用於科學及工程領域的程式設計,這種程式設計方法能夠讓使用者在只給一次指令的情況下對一個資料陣列進行操作。在R語言,要輸出一個矩陣的方法如下圖(詳細R語法及函數會在後面進行介紹)

matrix(數字1:數字2, 列數 = x)

https://ithelp.ithome.com.tw/upload/images/20190918/20120887S2BmPyung2.png

R語言同時也是一種 指令式編程(imperative programming) 程式語言。指令式編程的定義為「一個程式敘述一個系列的步驟,並以之改變電腦的狀態」。其實,因為電腦都是設計來執行指令的,所以電腦硬體的工作方式都是指令式編程。基本上,指令式編程有下列四種基本語句:

  • 運算語句:表現資料進行運算的行為
  • 迴圈語句:讓一個程式語句反覆執行,可以透過設定預設反覆執行次數(例如:apply, tapply, lapply, sapply等函數)
  • 條件分支語句:容許在指定條件下執行某程式(或某一段程式),若未達到條件則某部分的程式會被跳過(例如:if else 函數等)
  • 無條件分支語句:在沒有任何條件的狀況下直接運行其他程式(或某一段程式)

程序式編程(procedural programming) 衍生自結構化程式設計,與指令式程式設計的特性差不多(有時甚至會互相通稱),流程控制(決定程式的執行及執行的先後順序)時主要以程式或函式進行呼叫(也就是說,程式是一個主動代理人,資料是被動物件且受主動代理人的控制,而人就負責創造代理人)。

函數式編程 (functional programming) 也是R語言的特性之一,因為函數式程式相當適合應用於統計分析、科學計算、巨量資料分析等工作。在函數式編程中,我們把函式當成單元,並以其處理各業務,每個函數可以當成引數互相傳送/返回。這種編程的優點是程式碼簡潔且易於理解。雖然以前認為函數式編程會耗費大量系統資源,但隨著電腦的處理效能及記憶體容量的提高,函數語言的優勢更加提升。

最後,R語言也是一種 反射式編程(reflective programming) 的程式語言(這裡的「反射」不是只要把什麼東西射到哪去,是指程式語言的「自省」能力喔)。這種邊程式語言有一個特點就是當程式在運行時,程式會自動檢測自身資訊,並根據這些資訊要求改變程式狀態或結構,另外,使用物件導向反射編程的程式設計員也可以在編輯期間不知道介面、欄位、方法名稱下檢查(可用的)介面、欄位、方法名稱。這種編程法大大提高程式語言的靈活性,但是也可能增加學習成本(因為需要經驗累積)。

綜上所述,R語言的功能強大、易學易用的特性除了有賴於其擴充性外,編程方法也佔了相當大的角色。

好了,R的編程特性我想寫到這邊就好(再寫下去就歹戲拖棚了ˊˇˋ),明天就開始做開發環境設定吧 :D

參考資料:

  1. “Imperative programming.” Computer Hope
    https://www.computerhope.com/jargon/i/imp-programming.htm
  2. 「妳真的理解函數語言程式設計嗎?」,ITREAD
    https://www.itread01.com/content/1545369323.html
  3. 維基百科
  4. Quora論壇
  5. "What is reflection and why is it useful?" https://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful

上一篇
Day 1- R 語言基本介紹 、物件導向基礎概念
下一篇
Day 3- R語言 開發環境、基礎語法
系列文
新手 R 語言學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0

1110318(五)0724,簽到!

我要留言

立即登入留言